<template>
  <div class="app-container">
    <el-form label-width="120px">
      <el-form-item label="信息描述">
        <el-tag type="info">excel模版说明</el-tag>
        <el-tag>
          <i class="el-icon-download"/>
          <a :href="defaultExcelTemplate">点击下载模版</a>
        </el-tag>

      </el-form-item>

      <el-form-item label="选择Excel">
        <el-upload
          ref="upload"
          :auto-upload="false"
          :on-exceed="fileUploadExceed"
          :on-success="fileUploadSuccess"
          :on-error="fileUploadError"
          :limit="1"
          action="http://127.0.0.1:8110/admin/edu/subject/import"
          name="file"
          accept="application/vnd.ms-excel">
          <el-button
            slot="trigger"
            size="small"
            type="primary">选取文件</el-button>
          <el-button
            :disabled="importBtnDisabled"
            style="margin-left: 10px;"
            size="small"
            type="success"
            @click="submitUpload()">导入</el-button>
        </el-upload>
      </el-form-item>
    </el-form>
  </div>
</template>
<script>
export default {
  data() {
    return {

      defaultExcelTemplate: 'https://0526guli.oss-cn-shanghai.aliyuncs.com/excel/2021-10-1482f848051aab49ceacf6800f65e79d86.xls',
      uploadpath: process.env.BASE_API + '/admin/edu/subject/import',
      importBtnDisabled: false
    }
  },
  methods: {
    // 上传按钮单击事件
    submitUpload() {
      // 4按钮点击时设置禁用
      this.importBtnDisabled = true
      // 调用上传组件的 submit() 就可以让它将自己选中的文件 提交给action地址
      // 在vue中如果需要获取页面中的标签对象，可以通过ref给标签设置ref属性值，然后通过vue.$ref.ref属性值获取到属性值对应的标签对象
      this.$refs.upload.submit()
    },
    // 上传组件：选中上传的文件个数超过limit的值时回调
    fileUploadExceed() {
      this.$messsage.warning('每次最多上传一个文件')
    },
    // 上传响应状态码为200的回调
    fileUploadSuccess(res, file) {
      // res的code=20000才代表上传成功
      // 判断是否上传成功
      if (res.success) {
        this.$messaage.success('导入课程分类成功')
      }
      // 取消按钮禁用
      this.importBtnDisabled = false
      // 清空上传文件缓存列表
      this.$refs.upload.clearFiles()
    },
    // 上传的响应报文状态码不为200时的回调
    fileUploadError(e, file) {
    }
  }
}
</script>
